package com.example.hfweather.storage

import android.content.Context
import android.content.SharedPreferences
import androidx.core.content.edit

class TokenPreferences  private constructor(context: Context){


    //1.期望以单例模式进行token的操作
    companion object {
        private var instance: TokenPreferences? = null
        fun getInstance(context: Context): TokenPreferences {
           //1.第一次检查如果实例存在直接返回
            return instance ?: synchronized(this) {
                //2.再次检查，如果实例不存在则创建
                instance ?: TokenPreferences(context.applicationContext).also {
                    instance = it
                }
            }

        }
    }
    //2.延迟创建SharedPreferences对象
    private val prefs: SharedPreferences by lazy {
        context.getSharedPreferences("token_prefs", Context.MODE_PRIVATE)
    }
    //3.创建方法存token
    fun saveToken(token: String) {
        prefs.edit().apply {
            putString("token", token)
            apply()
        }
    }
    //4.创建方法获取token
    fun getToken(): String? {
        return prefs.getString("token", null)
    }
    //5.创建方法删除token
    fun removeToken() {
        prefs.edit().apply {//创建编辑器这是这个.apply Kotlin Android KTX 提供的扩展函数 接收一个 lambda 表达式作为参数 自动处理 edit() 和 apply() 的调用
            remove("token")
            apply()//异步提交不会阻塞主线程
        }
    }

}